Conversation
…cording-connection-109
…cording-connection-109
Summary of ChangesHello @AndyH0ng, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! 이 PR은 영상 및 피드백 시스템의 핵심적인 개선 사항들을 포함하고 있습니다. API DTO의 전면적인 재정의를 통해 데이터 모델의 일관성을 확보하고, 인증 플로우를 현대적인 웹 표준에 맞춰 재구축했습니다. 또한, 사용자 피드백을 시각화하는 인사이트 기능을 확장하고, 클라이언트 측 상태 관리 로직을 최적화하여 전반적인 사용자 경험과 개발 효율성을 향상시키는 데 중점을 두었습니다. Highlights
Changelog
Activity
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request primarily focuses on refactoring API DTOs and related hooks for comments, presentations, reactions, and videos, introducing more granular and consistent data structures, including pagination for replies and detailed video timeline data. Key changes include moving OAuth callback handling to the client-side, updating package.json and package-lock.json to include cross-env and declare peer: true for various dependencies, and modifying the dev:local script to use cross-env. The .gitignore file was updated to ignore .env.production and explicitly track pnpm-lock.yaml. Frontend components and hooks were adjusted to align with the new DTOs and API endpoints, such as updating comment IDs from id to commentId, enhancing the video playback bar with reaction timeline data, and improving insight sections with more robust data handling and UI. Review comments highlighted a missing sort logic for comments, a removed hover style for a delete button, and an unnecessary space in a cross-env command, along with a suggestion to conditionally log console.error messages in development environments.
| const comments = useMemo(() => { | ||
| if (!flatComments) return EMPTY_COMMENTS; | ||
| const tree = flatToTree(flatComments); | ||
| return [...tree].sort( | ||
| (a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime(), | ||
| ); | ||
| return flatToTree(flatComments); | ||
| }, [flatComments]); |
There was a problem hiding this comment.
이전 버전에서는 댓글 목록을 최신순으로 정렬하는 로직이 있었으나, 리팩토링 과정에서 제거된 것으로 보입니다. 일반적으로 사용자는 최신 댓글을 먼저 보기를 기대하므로, flatToTree 함수를 호출한 후에 생성 날짜(createdAt)를 기준으로 내림차순 정렬을 다시 추가하는 것을 고려해 보세요.
const comments = useMemo(() => {
if (!flatComments) return EMPTY_COMMENTS;
const tree = flatToTree(flatComments);
return [...tree].sort(
(a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime(),
);
}, [flatComments]);| "scripts": { | ||
| "dev": "vite", | ||
| "dev:local": "VITE_API_MOCKING=true vite", | ||
| "dev:local": " cross-env VITE_API_MOCKING=true vite", |
| onClick={handleDelete} | ||
| aria-label="댓글 삭제" | ||
| className="flex items-center gap-1 rounded text-caption-bold text-error hover:text-red-400 active:opacity-80 focus-visible:outline-2 focus-visible:outline-error" | ||
| className="flex items-center gap-1 rounded text-caption-bold text-error active:opacity-80 focus-visible:outline-2 focus-visible:outline-error" |
There was a problem hiding this comment.
댓글 삭제 버튼의 hover 스타일이 제거되었습니다. 사용자에게 더 나은 시각적 피드백을 제공하기 위해 hover:text-red-400과 같은 스타일을 다시 추가하는 것을 고려해 보세요.
| className="flex items-center gap-1 rounded text-caption-bold text-error active:opacity-80 focus-visible:outline-2 focus-visible:outline-error" | |
| className="flex items-center gap-1 rounded text-caption-bold text-error hover:text-red-400 active:opacity-80 focus-visible:outline-2 focus-visible:outline-error" |
| * - "작은 박스(PiP)"를 hover하면 디밍+텍스트, 클릭하면 슬라이드/웹캠 위치가 토글됨 | ||
| * - HLS(.m3u8) 스트리밍 지원 (hls.js) | ||
| */ | ||
| /* eslint-disable no-console */ |
📌 관련 이슈
💡 참고 사항
스크린샷, 참고 링크, 추가 설명 등 (없으면 생략 가능)